1. Field
The present disclosure generally relates to a method, apparatus, and computer usable code for recycling software components. More particularly, the disclosure relates to automatically retiring software components based on usage level.
2. General Background
Conventional software architectures tend to be planned-ahead and rigid, not flexible and resilient enough to adapt to the fast requirement changes. They are not made to deal with changes other than the pre-determined set of IF-THEN conditions. Software design assumes all variables would have been considered before the system is deployed.
In reality, since changes are not 100% predictable, software must be periodically revised and updated. Therefore, software is often updated with new releases, or patched to cope with changes. A patch is a small piece of software designed to update or fix problems with a computer program. This includes fixing bugs, replacing graphics and improving the usability or performance. Though meant to fix problems, poorly designed patches can sometimes introduce new problems (aka. software regressions).
There are several methods of updating software. Old software can be uninstalled or removed and new software installed in its place. This is time consuming and involves downtime. Alternatively, software can be upgraded, which involves adding onto the already existing framework.
Deployment of new software releases tends to cause system down-time and service interruption. Release cycles also cause stress on the software development process, as shown in the pressure of handling defects near the end of every release, and the leisure of reinventing the wheel in the beginning of a release cycle. Software needs to change more constantly, smoothly, and with less interruption.
Componentization and plug-in framework infrastructures make it possible to update software with on-demand augmentation, such as the software updater on Eclipse and Microsoft Windows automatic update. (Microsoft, Windows, Windows NT, and the Windows logo are trademarks of Microsoft Corporation in the United States, other countries, or both.) Still, a consequence of such augmentation is that the user's system gets larger and larger with time, not only in the sense of software foot print, but also the complexity. We call this problem software obesity.